package control;

import java.sql.SQLException;
import java.util.List;

import model.LinhaProjeto;
import model.Projeto;
import model.Requisicao;
import model.UsuarioCT;
import dao.UsuarioCTDAO;

public class Facade {
	
	private static Facade instance = null;
	private SistemaFloappRep floappRep;
	
	private Facade() throws SQLException {
		floappRep = new SistemaFloappRep();
	}
	
	public static Facade getInstance() throws SQLException {
		if (instance == null) {
			instance = new Facade();
			return instance;
		}
		return instance;
	}
	
	public UsuarioCT login(UsuarioCT usuarioForm) throws SQLException {
		return floappRep.login(usuarioForm);
	}
	
	public void associaProjeto(String usuario, String nomeUnix, String tipo) throws SQLException {
		floappRep.associaProjeto(usuario, nomeUnix, tipo);
	}

	public boolean ehAdministrador(String usuario, String nomeUnix) throws SQLException {
		return floappRep.ehAdministrador(usuario, nomeUnix);
	}

	public Projeto pesquisaProjeto(String nomeUnix) throws SQLException {
		return floappRep.pesquisaProjeto(nomeUnix);
	}

	public void cadastraProjeto(UsuarioCT usuario, Projeto projeto) throws SQLException {
		floappRep.cadastraProjeto(usuario, projeto);
	}

	public List<Projeto> listaProjetos(String usuario) throws SQLException {
		return floappRep.listaProjetos(usuario);
	}
	
	public List<Projeto> listaProjetos() throws SQLException {
		return floappRep.listaProjetos();
	}

	public void removeProjeto(String nomeUnix) throws SQLException {
		floappRep.removeProjeto(nomeUnix);
	}

	public List<Projeto> listaProjetos(String usuario, String tipo) throws SQLException {
		return floappRep.listaProjetos(usuario, tipo);
		
	}

	public List<Projeto> listaProjetosQueNaoPertence(String usuario) throws SQLException {
		return floappRep.listaProjetosQueNaoPertence(usuario);
	}

	public List<Requisicao> listaRequisicoes(String usuario) throws SQLException {
		return floappRep.listaRequisicoes(usuario);
		
	}

	public void alteraProjeto(Projeto projeto) throws SQLException {
		floappRep.alteraProjeto(projeto);
		
	}

	public void removeUsuarioRequisicao(String usuario, String nomeUnix) throws SQLException {
		floappRep.removeUsuarioRequisicao(usuario, nomeUnix);
		
	}

	public void aceitaUsuarioRequisicao(String usuario, String nomeUnix, boolean valor) throws SQLException {
		floappRep.aceitaUsuarioRequisicao(usuario, nomeUnix, valor);
	}
	
	public void cadastrarUsuario(UsuarioCT usuario) throws SQLException {
		floappRep.cadastrarUsuario(usuario);
	}
	
	public void removerUsuario(UsuarioCT usuario) throws SQLException {
		floappRep.removerUsuario(usuario);
	}
}
